﻿using System;
using System.Collections.Generic;

namespace Pap.Data
{
    /// <summary>
    /// 
    /// </summary>
    public interface IProject : IEntity
    {
        /// <summary>
        /// Gets or sets the project ID.
        /// </summary>
        /// <value>
        /// The project ID.
        /// </value>
        Guid ProjectID
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the name of the project.
        /// </summary>
        /// <value>
        /// The name of the project.
        /// </value>
        string ProjectName
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the profit percent.
        /// </summary>
        /// <value>
        /// The profit percent.
        /// </value>
        decimal ProfitPercent
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the parent ID.
        /// </summary>
        /// <value>
        /// The parent ID.
        /// </value>
        Guid? ParentID
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the parent project.
        /// </summary>
        /// <value>
        /// The parent project.
        /// </value>
        IProject ParentProject
        {
            get;
            set;
        }

        /// <summary>
        /// Gets the stages.
        /// </summary>
        IEnumerable<IProjectStage> Stages
        {
            get;
        }

        /// <summary>
        /// Gets the committee bank accounts.
        /// </summary>
        IEnumerable<ICommitteeBankAccount> CommitteeBankAccounts
        {
            get;
        }

        /// <summary>
        /// Adds the stage.
        /// </summary>
        /// <param name="stage">The stage.</param>
        void AddStage(IProjectStage stage);

        IEnumerable<IUsersProject> UsersProject { get; }
    }
}
